package ch04
{
	import flash.display.Sprite;
	import flash.events.MouseEvent;

	/**
	 *使用 curveTo 绘制曲线
	 * curveTo 函数中包括两个点。第一个是控制点影响曲线的形状，另一个是曲线的终点。
	 * 这里使用的是名为二次方贝塞尔曲线的标准公式，该公式可以计算出两点间的曲线，这条曲线向着控制点弯曲。
	 * 请注意，曲线不会真正到达控制点位置，而只到达与控制点一半的位置。
	 * @author jianping.shenjp
	 *
	 */
	public class DrawingCurves extends Sprite
	{
		private var x0:Number=100;
		private var y0:Number=200;
		private var x1:Number;
		private var y1:Number;
		private var x2:Number=300;
		private var y2:Number=200;

		public function DrawingCurves()
		{
			init();
		}

		private function init():void
		{
			stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
		}

		private function onMouseMove(event:MouseEvent):void
		{
			x1=mouseX;
			y1=mouseY;
			/**
			 * 过控制点的曲线
			 * 以 x0,y0 为起点，以 x2,y2 为终点，x1,y1为控制点，把将要穿过的点叫 xt,yt (目标点)。
			 * 换言之，如果让曲线穿过 xt,yt点，那么 x1,y1 又需要如何使用呢？
			 * 公式如下： x1 = xt * 2 – (x0 + x2) / 2; y1 = yt * 2 – (y0 + y2) / 2;
			 * 只需要把目标点乘以2，然后减去起点与终点的平均值。
			 * */
//			x1=mouseX * 2 - (x0 + x2) / 2;
//			y1=mouseY * 2 - (y0 + y2) / 2;
			graphics.clear();
			graphics.lineStyle(1);
			graphics.moveTo(x0, y0);
			graphics.curveTo(x1, y1, x2, y2);
		}
	}
}